/*
 * cacheArchivos.h
 *
 *  Created on: 13/11/2011
 *      Author: root
 */

#ifndef CACHEARCHIVOS_H_
#define CACHEARCHIVOS_H_

typedef struct bloquesCache{
	int32_t nroClusterEnArchivo;
	int32_t nroIngreso;
	int16_t flush;
	char bloqueInfo[4096];
	struct bloquesCache *ptrSigBloque;
}bloques_t;

typedef bloques_t *ptrBloque;

typedef struct cacheArchivo {
	char path[100];
	char nombreArchivo[20];
	pthread_mutex_t semaforo;
	int32_t nroClusterEstaArchivo;
	int32_t tamArchivo;
	int32_t tamBloqueCache;
	int16_t cantBloques;
	ptrBloque bloquesSubLista;
	struct cacheArchivo *ptrSigArchivo;
}cache_t;

typedef cache_t *ptrCacheArchivo;

/*--------FUNCIONES--------*/

void crearArchivoCache (char *path,char *nombreArchivo,int32_t nroCluDeArchivo,ptrCacheArchivo *listaCaches);
ptrCacheArchivo buscarArchivoEnCache(char *path,ptrCacheArchivo listaCaches);
void cambiarNombreArchivoCache(ptrCacheArchivo *archivoACambiar,char *nuevoNombre);
void eliminarBloques(ptrBloque *listaBloques);
void eliminarCaches(ptrCacheArchivo *listaCaches);
int32_t agregarInfoAbloqueCache(ptrCacheArchivo *archivoCache,int32_t nroBloque,int32_t tamArchivo,char *info);
int32_t imprimirBloquesCache(ptrCacheArchivo archivoCache);
int32_t buscaClusterDeArchivoCacheYCambiaInfo(ptrCacheArchivo *cacheArchivo,int32_t nrocluster,char *info,int32_t tamArchivo);

#endif /* CACHEARCHIVOS_H_ */
